package org.shj.pattern.factorymethod;

/**
 * 工厂方法: 定义一个用于创建对象的接口，让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
 * 缺点： 1. 客户端需要决定实例化哪一个工厂，选择判断的问题还是存在的。也就是说，工厂方法把简单工厂的内部逻辑
 *         判断移到了客户端代码来进行。
 *      2. 每次增加一个产品时，都需要增加一个具体类和对象实现工厂，使得系统中类的个数成倍增加
 * 优点： 1. 一个调用者想创建一个对象，只要知道其名称就可以了。
 *      2. 扩展性高，如果想增加一个产品，只要扩展一个工厂类
 * 
 * @author huangjian
 *
 */
public class Main {

	public static void main(String[] args) {
		Factory fac = new AddFactory();
		Operation op = fac.createOperation();
		
		op.setNumA(12);
		op.setNumB(32);
		
		System.out.println(op.getResult());
		
		
		fac = new SubFactory();
		op = fac.createOperation();
		
		op.setNumA(12);
		op.setNumB(32);
		
		System.out.println(op.getResult());

	}

}
